package Leetcode;

/*给定一个三角形，找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。

        例如，给定三角形：

        [
        [2],
        [3,4],
        [6,5,7],
        [4,1,8,3]
        ]
        自顶向下的最小路径和为 11（即，2 + 3 + 5 + 1 = 11）。

        说明：

        如果你可以只使用 O(n) 的额外空间（n 为三角形的总行数）来解决这个问题，那么你的算法会很加分。*/

import java.util.List;

public class problem120 {
    public int minimumTotal(List<List<Integer>> triangle) {
        if(triangle==null||triangle.size()==0){
            return 0;
        }

        int length = triangle.size();
        int[] arr = new int[length+1];

        for(int i = length - 1;i >= 0;i--){
            List<Integer> curList = triangle.get(i);
            for(int j = 0;j < curList.size() ;j++){
                arr[j] = curList.get(j) + Math.min(arr[j],arr[j+1]);
            }
        }
        return arr[0];
    }

    public static void main(String[] args) {
        int a = -35;
        System.out.println(a<<1);
    }
}
